﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WCS.Infrastructure.Dto.Enums
{
    /// <summary>
    /// 表示收款平台所使用的收款设备的不同类型。
    /// </summary>
    public enum ReceivingDeviceType
    {
        /// <summary>
        /// 销售点终端设备，通常用于实体店中，可连接银行卡读卡器、扫码枪等，
        /// 支持刷卡、插卡、扫码等多种支付方式，是一种功能较为全面的收款设备。
        /// </summary>
        POS,

        /// <summary>
        /// 移动支付终端，体积小巧、便于携带，适用于需要移动收款的场景，
        /// 如外卖配送员、流动摊贩等，一般通过蓝牙或 Wi - Fi 与网络连接进行支付处理。
        /// </summary>
        MobilePaymentTerminal,

        /// <summary>
        /// 二维码扫码枪，主要用于扫描用户手机上的付款二维码，
        /// 操作简单快捷，广泛应用于小型店铺、便利店等场景。
        /// </summary>
        QRCodeScanner,

        /// <summary>
        /// 指纹识别收款设备，通过识别用户的指纹信息进行身份验证和支付操作，
        /// 提供了一种更加安全和便捷的支付方式，常用于对安全性要求较高的场所。
        /// </summary>
        FingerprintPaymentDevice,

        /// <summary>
        /// 人脸识别收款设备，利用人脸识别技术对用户进行身份识别并完成支付，
        /// 具有无需接触、快速识别的特点，常见于商场、超市等大型场所。
        /// </summary>
        FaceRecognitionPaymentDevice,

        /// <summary>
        /// 自助收银机，放置在商场、超市等场所，顾客可以自行完成商品扫码、结算等操作，
        /// 提高了收银效率，减少了人工成本。
        /// </summary>
        SelfServiceCashRegister,

        /// <summary>
        /// 智能手环支付设备，用户可以将支付账户与智能手环绑定，
        /// 在消费时通过手环完成支付，具有便捷、时尚的特点。
        /// </summary>
        SmartBandPaymentDevice,

        /// <summary>
        /// 蓝牙支付标签，可与支持蓝牙支付的设备配对使用，
        /// 适用于一些小型、临时性的收款场景。
        /// </summary>
        BluetoothPaymentTag
    }
    /// <summary>
    /// 表示收款平台收款设备在其使用过程中可能处于的各种状态。
    /// </summary>
    public enum ReceivingDeviceStatus
    {
        /// <summary>
        /// 设备处于未激活状态，通常是新设备尚未完成初始化配置，
        /// 不能进行正常的收款操作，需要进行一系列的设置和激活流程。
        /// </summary>
        Unactivated,

        /// <summary>
        /// 设备正在进行激活操作，系统正在验证设备信息、
        /// 与收款平台进行数据交互以完成激活流程。
        /// </summary>
        Activating,

        /// <summary>
        /// 设备已成功激活，可以正常使用，能够接收用户的支付请求并处理收款业务。
        /// </summary>
        Activated,

        /// <summary>
        /// 设备正在进行收款操作，正在与用户的支付设备（如银行卡、手机等）
        /// 进行数据交互，处理支付交易。
        /// </summary>
        ReceivingPayment,

        /// <summary>
        /// 收款操作成功完成，款项已成功从用户账户扣除并记录到收款平台。
        /// </summary>
        PaymentReceivedSuccessfully,

        /// <summary>
        /// 收款操作失败，可能是由于用户支付账户余额不足、支付设备故障、
        /// 网络连接问题等原因导致。
        /// </summary>
        PaymentReceivedFailed,

        /// <summary>
        /// 设备正在进行自检操作，检查自身的硬件和软件是否正常工作，
        /// 通常在开机或定期维护时进行。
        /// </summary>
        SelfChecking,

        /// <summary>
        /// 设备自检通过，硬件和软件功能正常，可以继续正常使用。
        /// </summary>
        SelfCheckPassed,

        /// <summary>
        /// 设备自检发现问题，可能存在硬件故障、软件错误等情况，
        /// 需要进行进一步的排查和维修。
        /// </summary>
        SelfCheckFailed,

        /// <summary>
        /// 设备正在进行软件更新，从收款平台下载最新的软件版本并进行安装。
        /// </summary>
        SoftwareUpdating,

        /// <summary>
        /// 设备软件更新成功，已安装最新版本的软件，可以正常使用新功能和修复的漏洞。
        /// </summary>
        SoftwareUpdateSuccess,

        /// <summary>
        /// 设备软件更新失败，可能是由于网络问题、存储空间不足等原因导致，
        /// 需要重新尝试更新或进行故障排查。
        /// </summary>
        SoftwareUpdateFailed,

        /// <summary>
        /// 设备处于离线状态，可能是由于网络连接中断、电源故障等原因，
        /// 无法与收款平台进行数据交互，不能正常进行收款操作。
        /// </summary>
        Offline,

        /// <summary>
        /// 设备处于维护状态，可能是由于需要进行硬件维修、清洁、
        /// 系统调试等操作，暂时不能使用。
        /// </summary>
        UnderMaintenance,

        /// <summary>
        /// 设备已损坏，无法正常工作，需要进行更换或报废处理。
        /// </summary>
        Damaged
    }

    /// <summary>
    /// 表示收款平台所使用的收款码的不同类型。
    /// </summary>
    public enum ReceivingQRCodeType
    {
        /// <summary>
        /// 静态收款码，由收款方预先生成，固定不变，包含收款方的账户信息等。
        /// 它的优点是生成后可长期使用，便于张贴展示；缺点是无法动态调整收款金额等信息。
        /// 常见于小商贩、个体店铺等场景。
        /// </summary>
        StaticQRCode,

        /// <summary>
        /// 动态收款码，每次收款时由收款系统实时生成，可根据具体的交易金额、订单号等信息动态变化。
        /// 它能有效提高交易的安全性和灵活性，广泛应用于电商、线上线下融合的交易场景。
        /// </summary>
        DynamicQRCode,

        /// <summary>
        /// 个人收款码，主要关联个人的支付账户，用于个人之间的收款、小额交易等。
        /// 通常操作较为简单，适合个人在日常生活中的收款需求。
        /// </summary>
        PersonalQRCode,

        /// <summary>
        /// 商家收款码，与商家的商业账户绑定，具备更多的商业功能，如支持多渠道收款、交易管理、对账等。
        /// 适用于各类商业经营活动的收款。
        /// </summary>
        MerchantQRCode,

        /// <summary>
        /// 聚合收款码，整合了多种支付渠道（如微信支付、支付宝、银联等）的收款功能。
        /// 用户扫描该码后，可根据自身需求选择合适的支付方式进行付款，为商家和用户提供了极大的便利。
        /// </summary>
        AggregateQRCode,

        /// <summary>
        /// 限时收款码，在一定的时间范围内有效，过期后需重新生成。
        /// 常用于一些有时间限制的促销活动、临时收款场景，可增强交易的时效性和安全性。
        /// </summary>
        TimeLimitedQRCode,

        /// <summary>
        /// 限额收款码，设置了每次收款或一定时间内的收款金额上限。
        /// 可用于控制风险、满足特定的业务需求，如针对某些高风险交易或特定客户群体的收款限制。
        /// </summary>
        AmountLimitedQRCode
    }
}
